Zjisteni IP adres z programu
Otázka od: EFG Developer
29. 11. 2002 9:02
Zdravim, jak co nejjednoduseji zjistim VSECHNY IP adresy PC, kde bezi
muj program (samozdrejme krome 127.0.0.1)?
Jde mi o reseni pokud možno bez komponent tretich stran.
Jmeno PC zjistim pomoci GetComputerName. Ještě bych tedy potreboval
zjistit všechny IP (PC muze mit vice sitovek nebo vice IP na jednu
sitovku).
[ Ted me ale napada, ze funkce GetComputerName nemusi odpovodat jmenu PC
v siti (v DNS) ]
Domnivam se, ze to musí bzt prinejmensim nekde v registrech.
Dekuji
Petr Sikola
Odpovedá: Blazek Jaroslav
29. 11. 2002 8:58
Ahoj,
> developer@efg.cz 29.11.02 8:36 >>>
>Zdravim, jak co nejjednoduseji zjistim VSECHNY IP adresy PC, kde bezi
>muj program (samozdrejme krome 127.0.0.1)?
>Jde mi o reseni pokud možno bez komponent tretich stran.
http://tangentsoft.net/wskfaq/examples/ipaddr.html
S pozdravem
Bc. Jaroslav Blazek
Access-IT Ceska Lipa
mailto:jaroslav.blazek@access-it.cz
http://www.access-it.cz
ICQ# : 133673990
+420605/813644
Odpovedá: Vit Tichy
29. 11. 2002 9:21
Joha EFG,
E> Zdravim, jak co nejjednoduseji zjistim VSECHNY IP adresy PC
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure getLocalIPs(var listIP:TStringList);
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
hostEnt :PHostEnt;
p :PaPInAddr;
buffer :array[0..63] of Char;
i, wsa :integer;
wsaData :TWSAData;
begin
listIP.clear();
wsa := WSAStartup($101, wsaData);
if(wsa = 0)then
try
GetHostName(buffer, SizeOf(buffer));
hostEnt := GetHostByName(buffer);
if(hostEnt <> nil)then
begin
i := 0;
p := PaPInAddr(hostEnt^.h_addr_list);
while(p^[I] <> nil)do
begin
listIP.Add(inet_ntoa(p^[I]^));
inc(I);
end;
end;
finally
WSACleanup;
end;
end;
--
vt